package cn.hy.today;

import java.util.ArrayDeque;

class Solution_2696 {

    // 我们遍历字符串 s，对于当前遍历到的字符 c，
    // 如果栈不为空且栈顶元素与 c 可以组成 AB 或 CD，则弹出栈顶元素，否则将 c 入栈。
    public int minLength(String s) {
        ArrayDeque<Character> stk = new ArrayDeque<>();
        for (Character c : s.toCharArray()) {
            if (!stk.isEmpty() && ((c == 'B' && stk.peek() == 'A') || (c == 'D' && stk.peek() == 'C'))) {
                stk.pop();
            } else {
                stk.push(c);
            }
        }
        return stk.size();
    }
}